Part I - 2D
Geometric Transformations |
Hearn and Baker – Chapter 5
· Geometric
Transformations – alter coordinate description of objects
· Basic
Transformations => Translation, Rotation, Scaling
·
Translation of a data point is accomplished through the
addition of factors to the x and y coordinates.
·
P(x,y) becomes P ' (x',y' )
x' = x + Tx
y' = y + Ty
·
Tx and Ty are the
shift in x and y coordinates.
·
Example: translating a square (Blue) by adding Tx = 3 to
each x coordinate, and Tx = -3 to
each y coordinate (Red).
·
Scaling proceeds by multiplying the coordinate values by Sx and Sy , scaling
factors in the x and y axis directions
x' = x
Sx
y' = y
Sy
·
Example: scaling a square by Sx = 2 and Sy = 3.
Sx |
Sy |
|
|
|
2 |
3 |
|
|
|
|
|
|
|
|
Original Points |
|
Absolute Scaling |
||
x |
y |
|
x' |
y' |
1 |
1 |
|
2 |
3 |
2 |
1 |
|
4 |
3 |
2 |
2 |
|
4 |
6 |
1 |
2 |
|
2 |
6 |
1 |
1 |
|
2 |
3 |
Note: square is not larger but also shifted twice
the distance from the origin in x,
and thrice the distance in y.
·
Rotation of a data point P(x,y) about the origin in the
counterclockwise direction to a new position P' (x',y') :
x' = r cos q
y' = r sin q
o Note: This is the transformation from polar coordinates to Cartesian
Coordinates where x=r
·
What if point is in xy plane?
Begin with…
x' = r cos (q + f)
y' = r sin (q + f)
Use trigonometric identities
cos (q + f) = cos f cos q - sin f sin q
sin (q + f) = cos f sin q + sin f cos q
Substitute
above into equations for x' and y' gives …
x' = r cos f cos q - r
sin f sin q
y' = r cos f sin q + r
sin f cos q
And …
cos f = x / r
sin f = y / r
Subsitute
into above…
x' = r (x
/ r )cos q - r (y / r) sin q = x cos q - y sin q
y' = r (x /
r )sin q + r
(y / r) cos q = x sin q + y cos q
o
where x,y are the starting coordinates
o
q is the angle
through which the point is rotated to give x
',y '.
·
Example:
o
Simple primitive geometric transformations may be combined
to create more complex and useful operations
o
e.g. an unwanted translation is a byproduct of scaling.
o
Solution
o
Translate object to the origin of the coordinate system
o
Scaling object
o
Translating object back to its original position
o
Step 1: Tx and Ty
are set to the x,y coordinates of P1
and subtracted from all points.
Places P1
at position (0,0) with all other points relative to it.
o
Step 2: Scaling is performed in, with Sx
= 2 and Sy = 3.
Object has
now been expanded relative to point P'1 that remains at the origin.
o
Step 3: object returned to the starting
point P1 by adding in the original x,y coordinates of P1 .
o Although scaling is executable as a three-step process, it is more efficient to combine them into a single transformation.
o Must recast the transformation into matrix notation.
o Look back at the two formulas for the rotation transformation
o New data point P ' consists of an ordered pair of numbers x',y' that may be written in matrix form as
o
Both matrices are one row by two columns => Row
Vectors
o
Matrix on RHS equal sign is an expansion of the left.
o
Element (1,1) of the first matrix equals element (1,1) of
the second.
o
Element (1,2) of the first matrix equals element (1,2) of
the second.
o
It is possible to decompose the RHS into two matrices
o x' results from multiplying each element in the coordinate
data row matrix with its respective element in the first column of the rotation
matrix and summing them;
o y' results from multiplying by the respective elements
in the second column and summation.
o A more
succinct vector notation is
where
R is the rotation matrix
X and X' contain the original and transformed data
o Matrix
multiplication:
o
proceeds from left to right
o
adheres to the associative law of multiplication,
o
does not obey the commutative law
o In general, C = AB is given
by
Example,
·
Can represent data as Column Vectors
Row Vector Column Vector
·
And
The column
vector is the transpose of the row vector
·
Transpose operation interchanges rows and
columns of matrix such that
xij = xji
· Transpose operation
interchanges multiplation of matrices
(RP)T = PTRT
·
Can rewrite matrix representation of rotation:
So…
becomes
with
or in
transposed form
with
· Problem:
Translation does not decompose into a 2 x 2 matrix
·
Solution: Represent Cartesian Coordinates (x,y) as
Homogeneous Coordinates (xh, yh, h)
Where
x = xh / h , y =
yh / h
typically h = 1
and … each data point is (x,
y, 1 )
1. Example:
General Fixed-point Scaling.
·
Three operations
These
correspond to the three steps of translation to the origin, scaling, and
translation back, with matrices
3rd 2nd 1st
Multiplying
through from left to right gives the final matrix
with final
equations
x' = xSx - xf Sx +
xf
y' = ySy - yf Sy +
yf
· If the object is already at the origin, xf = yf = 0, the formula reduces to the original scaling formula.
· Example:
Sx |
Sy |
|
|
|
|
|
|
2 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Original Points |
|
Absolute Scaling |
|
Fixed Point |
|||
x |
y |
|
x' |
y' |
|
x' |
y' |
1 |
1 |
|
2 |
3 |
|
1 |
1 |
2 |
1 |
|
4 |
3 |
|
3 |
1 |
2 |
2 |
|
4 |
6 |
|
3 |
4 |
1 |
2 |
|
2 |
6 |
|
1 |
4 |
1 |
1 |
|
2 |
3 |
|
1 |
1 |
2. General Pivot Rotation (Rigid-Body Transformation)
·
Rotate object about a
point (xr, yr)
Steps:
1. Translate to Origin
2. Rotate about Origin
3. Translate back
·
Final matrix:
·
Final Formulas
x' = x cos q - y sin q + xr(1- cos q) + yr
sin q
y' = x sin q + y cos q + yr (1 - cos q) – xr
sin q
·
Example
Starting Point:
|
Angle |
|
xc |
yc |
|
0 |
|
0.5 |
0.5 |
|
|
|
|
|
Original |
|
|
Transformed |
|
x |
y |
|
x' |
y' |
0.0 |
0.0 |
|
0.00 |
0.00 |
1.0 |
0.0 |
|
1.00 |
0.00 |
1.0 |
1.0 |
|
1.00 |
1.00 |
0.0 |
1.0 |
|
0.00 |
1.00 |
0.0 |
0.0 |
|
0.00 |
0.00 |
Rotation
Angle: 30 Degrees
|
Angle |
|
xc |
yc |
|
30 |
|
0.5 |
0.5 |
|
|
|
|
|
Original |
|
|
Transformed |
|
x |
y |
|
x' |
y' |
0.0 |
0.0 |
|
0.32 |
-0.18 |
1.0 |
0.0 |
|
1.18 |
0.32 |
1.0 |
1.0 |
|
0.68 |
1.18 |
0.0 |
1.0 |
|
-0.18 |
0.68 |
0.0 |
0.0 |
|
0.32 |
-0.18 |
·
Reflection
e.g. reflection about y = 0
e.g. reflection about y = x
· Example:
Original |
Data |
|
Reflection
|
y = x |
x |
y |
|
x' |
y' |
2.0 |
0.5 |
|
0.5 |
2.0 |
3.0 |
0.5 |
|
0.5 |
3.0 |
3.0 |
1.5 |
|
1.5 |
3.0 |
2.0 |
1.5 |
|
1.5 |
2.0 |
2.0 |
0.5 |
|
0.5 |
2.0 |
·
Shear
Shape Distortion
x shear
Example:
Shear |
|
|
|
|
Shx |
Shy |
|
|
|
1 |
0 |
|
|
|
|
|
|
|
|
Original |
Data |
|
Final |
Data |
x |
y |
|
x' |
y' |
1.0 |
0.5 |
|
1.5 |
0.5 |
2.0 |
0.5 |
|
2.5 |
0.5 |
2.0 |
1.5 |
|
3.5 |
1.5 |
1.0 |
1.5 |
|
2.5 |
1.5 |
1.0 |
0.5 |
|
1.5 |
0.5 |
· What would
y shear matrix look like?
Shear |
|
|
|
|
Shx |
Shy |
|
|
|
0 |
1 |
|
|
|
|
|
|
|
|
Original |
Data |
|
Final |
Data |
x |
y |
|
x' |
y' |
1.0 |
0.5 |
|
1.0 |
1.5 |
2.0 |
0.5 |
|
2.0 |
2.5 |
2.0 |
1.5 |
|
2.0 |
3.5 |
1.0 |
1.5 |
|
1.0 |
2.5 |
1.0 |
0.5 |
|
1.0 |
1.5 |
· Graphic
applications need transformation:
· from one
coordinate system to another
· from one
reference frame to another
· e.g. Two
Cartesian Systems:
1.
Translate to origin
2.
Rotate clockwise x’ into x
R(-q) =